A storage system typically comprises one or more storage devices into which information may be entered, and from which information may be obtained, as desired. The storage system includes a storage operating system that functionally organizes the system by, inter alia, invoking storage operations in support of a storage service implemented by the system. The storage system may be implemented in accordance with a variety of storage architectures including, but not limited to, a network-attached storage environment, a storage area network and a disk assembly directly attached to a client or host computer. The storage devices are typically disk drives organized as a disk array, wherein the term “disk” commonly describes a self-contained rotating magnetic media storage device. The term disk in this context is synonymous with hard disk drive (HDD) or direct access storage device (DASD).
The storage operating system of the storage system may implement a high-level module, such as a file system, to logically organize the information stored on disks as a hierarchical structure of data containers, such as volumes, files, and logical units. For example, each “on-disk” file may be implemented as set of data structures, i.e., disk blocks, configured to store information, such as the actual data for the file. These data blocks are organized within a volume block number (vbn) space that is maintained by the file system. The file system may also assign each data block in the file a corresponding “file offset” or file block number (fbn). The file system typically assigns sequences of fbns on a per-file basis, whereas vbns are assigned over a larger volume address space. The file system organizes the data blocks within the vbn space as a “logical volume”; each logical volume may be, although is not necessarily, associated with its own file system.
A known type of file system is a write-anywhere file system that does not overwrite data on disks. If a data block is retrieved (read) from disk into a memory of the storage system and “dirtied” (i.e., updated or modified) with new data, the data block is thereafter stored (written) to a new location on disk to optimize write performance. A write-anywhere file system may initially assume an optimal layout such that the data is substantially contiguously arranged on disks. The optimal disk layout results in efficient access operations, particularly for sequential read operations, directed to the disks. An example of a write-anywhere file system that is configured to operate on a storage system is the Write Anywhere File Layout (WAFL®) file system available from Network Appliance, Inc., Sunnyvale, Calif.
The storage system may be further configured to operate according to a client/server model of information delivery to thereby allow many clients to access data containers stored on the system. In this model, the client may comprise an application, such as a database application, executing on a computer that “connects” to the storage system over a computer network, such as a point-to-point link, shared local area network (LAN), wide area network (WAN), or virtual private network (VPN) implemented over a public network such as the Internet. Each client may request the services of the storage system by issuing file-based and block-based protocol messages (in the form of packets) to the system over the network.
A plurality of storage systems may be interconnected to provide a clustered storage system configured to service many clients. Each storage system may be configured to service one or more data containers, such as volumes, wherein each volume stores one or more, e.g., files. Yet often a large number of data access requests issued by the clients may be directed to a small number of data containers serviced by a particular storage system of the cluster. A solution to such a problem is to distribute the volumes serviced by the particular storage system among all of the storage systems of the cluster. This, in turn, distributes the data access requests, along with the processing resources needed to service such requests, among all of the storage systems, thereby reducing the individual processing load on each storage system. However, a noted disadvantage arises when only a single file is heavily accessed by clients of the clustered storage system. As a result, the storage system attempting to service the requests directed to that file may exceed its processing resources and become overburdened, with a concomitant degradation of speed and performance.
One noted disadvantage of utilizing clustered storage systems is that a plurality of instantiations of volumes may be distributed across the systems of the cluster. These volumes may include, e.g., persistent consistency point images (PCPIs) of the volume, mirrored volumes, etc. In a conventional clustered storage system, many of the volumes within the cluster may represent the same data set, and, thus, store identical data; an example of such volumes is a mirrored volume arrangement having a source volume and one or more “mirror” destination volumes. To improve data availability, it may be desirable to service a data access request from any of the volumes within the cluster that share identical data. However, many data access protocols, such as the Network File System protocol (NFS), may not function properly should an identifier (ID) of the volume differ between the request and the volume servicing the request. For example, an NFS request directed to a source volume having a volume ID of 1000 will return an error message if it is served from a destination volume having an ID of 1001, even if the destination volume is a mirror of the source volume.